package demo02;

import java.util.HashSet;

/*
 *  HashSet存储自定义类型元素
 * 
 *  set集合保证元素唯一：
 *      存储的元素(String, Integer, ...Student, Person...)，必须重写hashCode方法和equals方法
 * 
 *  要求：同名同年龄的人，视为同一个人，只能存储一次
 */
public class Demo03HashSetSavePerson {
    public static void main(String[] args) {
        HashSet<Person> hashSet = new HashSet<>(); // 创建存储Person的HashSet集合
        Person person = new Person("土司鸡", 18);
        Person person2 = new Person("土司鸡", 19);
        Person person3 = new Person("土司鸡", 18);
        hashSet.add(person);
        hashSet.add(person2);
        hashSet.add(person3);

        // 在类中重写了hashCode和equals方法后
        System.out.println(person.hashCode()); // 22141559
        System.out.println(person2.hashCode()); // 22141590
        System.out.println(person3.hashCode()); // 22141559，与第一个person相同
        System.out.println(person.equals(person3)); // true，两个对象是同一个对象
        System.out.println(hashSet); // [Person [age=18, name=土司鸡], Person [age=19, name=土司鸡]]，结果只存储了两个对象
    }
}
